Data communication protocols designed to provide a reliable data transfer typically make use of error control protocols. The error control protocols are designed to detect errors in the received data blocks and to signal the status of the received data blocks back to the transmitter from the receiver over a feedback channel indicating if the received data block was correctly or erroneously received. This allows the transmitter to retransmit erroneous data blocks.
If a data block has not been received correctly the block is said to be Negative ACKnowledged (NACK) while a correctly received data block is ACKnowledged (ACK). Each data block is typically associated with a sufficiently enough unique sequence number to keep track of the individual block. A data block is retransmitted if the receiver indicates sequence number in the error control protocol over the feedback channel as being not received correctly, i.e. a NACK is sent. One example of an ACK/NACK protocol is the TCP protocol, see e.g. “Transmission Control Protocol,” J. Postel, RFC-793, September 1981; in the TCP/IP suite of protocols.
In General Packet Radio Service (GPRS) GPRS/EDGE the ACK/NACK indication of a data block or a number of data blocks is signaled in a control block message, see “Radio Link Control/Medium Access Control (RLC/MAC) protocol,” 3GPP TS 44.060 Rel-7. The network (NW) side controls the whole procedure in both uplink and downlink directions. The user equipment (UE) is polled when a Packet Downlink ACK/NACK message is to be sent to the network when the NW is the transmitting side and the UE is the receiving side of the data stream. If the data stream is sent in the uplink direction, i.e. when the UE is the transmitter and the NW the receiver, the NW transmits the ACK/NACK indications in a Packet Uplink ACK/NACK message to the UE.
In Global System for Mobile Communication/Enhanced Data rates for GSM Evolution (GSM/EDGE) Radio Access Network (GERAN)GERAN Evolution a Fast ACK/NACK reporting (FANR) scheme has been introduced, in addition to the existing control messages, by which ACK/NACK indications may also be piggybacked onto an RLC data block by using a Piggybacked Ack/Nack (PAN) field, see “Radio Link Control/Medium Access Control (RLC/MAC) protocol,” 3GPP TS 44.060 Rel-7. The reason is to provide a faster Ack/Nack mechanism. The Ack/Nack reports have typically a starting sequence number followed by a bitmap containing a sequence of Ack/Nack indicators of the data blocks in ascending order. This approach optimizes the message length. The starting sequence number can be omitted if the start of the bitmap is known by other means. The reliable transfer mode in GERAN is the RLC Acknowledged Mode.
ACK/NACK messages are typically protected by a checksum that is used to verify that the ACK/NACK content has not been altered during the transmission. An example of a checksum is a Cyclic Redundancy Check (CRC) error detecting code. In GERAN both the Packet Uplink/Downlink ACK/NACK message and PAN field are protected by a CRC.
However, when FANR is applied, the limited amount of bits available for a CRC-based PAN-field error detection results in a higher probability for indicating that a PAN has been received correctly when the PAN actually contains errors. This may cause severe problems like stalling the RLC protocol without being able to recover from this state eventually ending the data connection. The PUAN/PDAN (Packet uplink Ack/Nack/Packet downlink Ack/Nack) messages have a CRC that is more reliable since it has a CRC protection with lower probability of so called false ACK/NACKs and the risk for a stall without recovery is low.
If a PAN has been received and the block sequence number (BSN) equal to V(A) is set to ACK, the transmit window will advance one step. However, if this was falsely done then the receiver still expects that the previous V(A) will be retransmitted while the transmitter considers it already to be correctly received and has erased it. Hence it is not possible to recover that data block. As a result, the transmitter will send a new data block.
V(A) is an acknowledge state variable—the acknowledge state variable contains the BSN value of the oldest RLC data block that has not been positively acknowledged by its peer. V(A) is updated after each reception of the RBB (Received block bitmap) from the peer RLC.
The reception of a block with a sequence number greater than the highest sequence number in the receive window indicates that the transmit window of the peer (transmitting) device has advanced further than the receive window of the receiving device; indicates that the transmitter had incorrectly advanced its window, based on a false positive PAN.
At this stage, i.e. when the receiver detects that a block with a sequence number greater than the highest sequence number in the receive window is received; it could indicate the fact that an unexpected data block has been received to the transmitter by sending a EPGRS PACKET DOWNLINK ACK/NACK. However this would not solve the problem since the transmitter has already advanced its window and the block that would be a subject for another retransmission is removed from the buffer and is hence no longer available for retransmission.
US 2006/0067238 discloses a system for detecting missing or corrupted data units and requesting retransmission of said data units.
Hence there exists a need for a transmission protocol that improves over existing transmission protocol and to reduce the risk of stalling transmission.
Another problem that may occur in existing transmission protocols is if an outstanding data block other than the oldest outstanding data block is indicated as correct but this is false for the same reason as described above.